// pattern匹配，如输入pattern=‘abba’,s='dog cat cat dog'，输出true；输入pattern=‘abbc’,s='dog dog dog cat'，输出false。

const debug = true
const log = debug ? console.log.bind(console, '*** debug ***') : () => {}

// 2、pattern匹配，如输入pattern=‘abba’,s='dog cat cat dog'，输出true；输入pattern=‘abbc’,s='dog dog dog cat'，输出false。
const fun = (pattern, s) => {
  let ws = s.split(' ')
  // key 为 单字符， value 为单词， 例如 { a: 'dog', b: 'car', }
  let mapChar = {}
  // key 为 单词， value 为单字符， 例如 { dog: 'a', car: 'b', }
  let mapWord = {}
  for (let i = 0; i < pattern.length; i++) {
    let char = pattern[i]
    let word = ws[i]
    let c = mapWord[word]
    let w = mapChar[char]
    // 比较单词
    if (!w) {
      mapChar[char] = word
    } else {
      if (w !== word) {
        return false
      }
    }
    // 比较单字符
    if (!c) {
      mapWord[word] = char
    } else {
      if (c !== char) {
        return false
      }
    }
  }
  return true
}

let b1 = fun('abba', 'dog cat cat dog')
log('b1', b1)
let b2 = fun('abbc', 'dog dog dog cat')
log('b2', b2)